package clockIn

import (
	"clockIn/internal/dao"
	"clockIn/internal/model/entity"
	"clockIn/internal/model/input"
	"clockIn/internal/service"
	"context"
	"github.com/gogf/gf/v2/frame/g"
	"github.com/gogf/gf/v2/os/gtime"
)

type sClockIn struct{}

func init() {
	service.RegisterClockIn(New())
}

func New() *sClockIn {
	return &sClockIn{}
}

func (s *sClockIn) List(ctx context.Context, in input.ClockInCreateModel) (List []*entity.ClockIn, total int) {
	List = make([]*entity.ClockIn, 0)
	total, err := dao.ClockIn.Ctx(ctx).Where("item_id", in.ItemId).Count()
	if err != nil {
		return nil, 0
	}
	err = dao.ClockIn.Ctx(ctx).Where("item_id", in.ItemId).WhereLike("created_at", in.Month+"%").Scan(&List)
	if err != nil {
		return nil, 0
	}
	return
}

func (s *sClockIn) Create(ctx context.Context, ItemId int64) (status int, err error) {
	// 查询今天有没有打卡
	info, err := dao.ClockIn.Ctx(ctx).Where("item_id=? AND created_at like ?", g.Slice{ItemId, gtime.Date() + "%"}).One()
	if err != nil {
		return 0, err
	}
	if !info.IsEmpty() {
		return 1, nil
	}
	_, err = dao.ClockIn.Ctx(ctx).Data(g.Map{
		"item_id":    ItemId,
		"created_at": gtime.Datetime(),
	}).Insert()
	if err != nil {
		return 0, err
	}
	return 2, nil
}
